function evento_HotelForm() {
	var ID_ATTRIBUTE = "hotel[]id";
	var NOMBRE_ATTRIBUTE = 	"hotel[]nombre";
	var DIRECCION_ATTRIBUTE = "hotel[]direccion";
	var TELEFONO_ATTRIBUTE = "hotel[]telefono";
	var CONTACTO_ATTRIBUTE = "hotel[]contacto";
	var MAIL_ATTRIBUTE = "hotel[]mail"; 
    var FORM_ID = "form_hotel";
    var FORM_MESSAGE_ID = "mensaje_hotel";
    
    var DIALOG_FORM_ID = "dialog_form_hotel";
    var DIALOG_FORM_ALTA_TITLE_TEXT = "Registrar un nuevo hotel";
    var DIALOG_FORM_ACTUALIZACION_TITLE_TEXT = "Actualizar datos del hotel";
    var CREAR_HOTEL_BUTTON_LABEL = "Crear hotel";
    var ACTUALIZAR_HOTEL_BUTTON_LABEL = "Actualizar hotel";
    
    
    var altaServiceUrl;
    var actualizarServiceUrl;
    var afterChangeCallback;
    
    this.setAltaServiceUrl = function(url) {
    	altaServiceUrl = url;
    }
    
    this.setActualizarServiceUrl = function (url) {
    	actualizarServiceUrl = url;
    }
		
	this.idFormulario = "form_hotel";
	this.formHtml = document.getElementById(this.idFormulario); 
	this.dialogConfig  = {
            autoOpen: false,
            height: 500,
            width: 500,
            modal: true,
            buttons: { },
            close: function() {
                $("#"+FORM_MESSAGE_ID).html("").parent().hide();
                var validator = $("#"+FORM_ID).validate();
                validator.resetForm();
            }
        };	
	$( "#"+DIALOG_FORM_ID ).dialog({autoOpen: false});
	$("#"+FORM_MESSAGE_ID).parent().hide();
	$( "#dialog:ui-dialog" ).dialog( "destroy" );
	this.cargar = function completarFormularioHotel(data) {
		this.formHtml.elements[ID_ATTRIBUTE].value = data.id;
		this.formHtml.elements[NOMBRE_ATTRIBUTE].value = data.nombre;
		this.formHtml.elements[DIRECCION_ATTRIBUTE].value = data.direccion;
		this.formHtml.elements[TELEFONO_ATTRIBUTE].value = data.telefono;
		this.formHtml.elements[CONTACTO_ATTRIBUTE].value = data.contacto;
		this.formHtml.elements[MAIL_ATTRIBUTE].value = data.mail;
	};
	this.limpiar = function() {
		this.formHtml.reset();
		/*this.formHtml.elements[ID_ATTRIBUTE].value = "";
		this.formHtml.elements[NOMBRE_ATTRIBUTE].value = "";
		this.formHtml.elements[DIRECCION_ATTRIBUTE].value = "";
		this.formHtml.elements[TELEFONO_ATTRIBUTE].value = "";
		this.formHtml.elements[CONTACTO_ATTRIBUTE].value = "";
	    this.formHtml.elements[MAIL_ATTRIBUTE].value = "";*/
	};
	this.abrirFormularioAlta = function(nombreHotel) {
		this.limpiar();
		this.formHtml.elements[NOMBRE_ATTRIBUTE].value = nombreHotel; 
		var altaHotelFunction = this.altaHotel;
		this.dialogConfig.buttons = {
			    "Crear hotel": altaHotelFunction,
                Cancel: function() {
                    $(this).dialog( "close" );
                }
		};
		$("#"+DIALOG_FORM_ID).attr( "title" , DIALOG_FORM_ALTA_TITLE_TEXT);
		$("#"+DIALOG_FORM_ID).dialog(this.dialogConfig).dialog("open");
		
	}
	this.abrirFormularioActualizacion = function(data) {
		this.limpiar();
		var actualizarHotelFunction = this.actualizarHotel
		this.dialogConfig.buttons = {
                "Actualizar hotel" : actualizarHotelFunction,
                Cancel: function() {
                    $(this).dialog( "close" );
                }
        };
		this.cargar(data);
		$("#"+DIALOG_FORM_ID).attr( "title" , DIALOG_FORM_ACTUALIZACION_TITLE_TEXT);
		$("#"+DIALOG_FORM_ID).dialog(this.dialogConfig).dialog("open");		
	}
	
	this.altaHotel = function() {
		var $formulario = $("#"+FORM_ID);
		if (!$formulario.valid()){
            return false;
        }     
		var hotelForm = $formulario.serializeObject();
		
        jQuery.ajax({
            type : 'POST',
            url : altaServiceUrl,
            contentType : 'application/json',
            data : $.toJSON(hotelForm.hotel),
            dataType : 'json',
            success : servicioAltaHotelSuccessCallBack,
            error : servicioAltaHotelErrorCallBack
    
        });
        return false;   
	}
	this.actualizarHotel = function() {
		var $formulario = $("#"+FORM_ID);
        if (!$formulario.valid()){
            return false;
        }     
        var hotelForm = $formulario.serializeObject();
        jQuery.ajax({
            type : 'PUT',
            url : actualizarServiceUrl,
            contentType : 'application/json',
            data : $.toJSON(hotelForm.hotel),
            dataType : 'json',
            success : servicioActualizacionHotelSuccessCallBack,
            error : servicioAltaHotelErrorCallBack
    
        });
        return false;   
    }
	
    this.setAfterChangeCallback = function(functionCallback) {
    	afterChangeCallback = functionCallback;
    }
    
    function servicioAltaHotelSuccessCallBack(hotel) {
		//$("#hotel\\.id").val(hotel.id)
		servicioSuccessMensaje("#mensaje_hotel", "El hotel " + hotel.nombre + " se grab&oacute; exitosamente");
		$("#dialog_form_hotel").next(".ui-dialog-buttonpane button:contains('"+CREAR_HOTEL_BUTTON_LABEL+"')").attr("disabled", true);
		if (afterChangeCallback != null){
			afterChangeCallback(hotel);
        }
		//recargarHoteles();
	}
	function servicioActualizacionHotelSuccessCallBack(hotel) {
		servicioSuccessMensaje("#"+FORM_MESSAGE_ID, "El hotel " + hotel.nombre + " se actualiz&oacute; exitosamente");
        if (afterChangeCallback != null){
        	afterChangeCallback(hotel);
        }
        //recargarHoteles();
    }
    function servicioAltaHotelErrorCallBack(data) {
    	servicioErrorMensaje("#l"+FORM_MESSAGE_ID, "Ocurri&oacute; un error en el alta/actualizaci&oacute;n del hotel", data);
    }
	
	function servicioErrorMensaje(selectorContenedor, mensaje,data) {
        var $mensaje = $(selectorContenedor);
        $mensaje.removeClass("mensaje");
        $mensaje.addClass("error");
        $mensaje.html(mensaje);
        
        $mensaje.parent().removeClass("contenedor_mensaje");
        $mensaje.parent("contenedor_mensaje_error").addClass();
        $mensaje.parent().show();        
	}
    function servicioSuccessMensaje(selectorContenedor, mensaje) {
        var $mensaje = $(selectorContenedor);
        $mensaje.removeClass("error");
        $mensaje.addClass("mensaje");
        $mensaje.html(mensaje);
        $mensaje.parent().removeClass("contenedor_mensaje_error");
        $mensaje.parent().addClass("contenedor_mensaje");
        $mensaje.parent().show();
    }
    
}
